package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/canvas"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
	"github.com/ajstarks/svgo"
	"os"
)

var lineCount int

func main() {
	myApp := app.New()
	myWindow := myApp.NewWindow("Dynamic Polyline Example")

	// 初始 SVG 文件
	svgFile := "polyline.svg"
	lineCount = 1 // 初始折线数量
	createSVG(svgFile, lineCount)

	// 加载 SVG 图像
	img := canvas.NewImageFromFile(svgFile)
	img.FillMode = canvas.ImageFillOriginal

	// 更新 SVG 图像的函数
	updateSVG := func() {
		lineCount++
		createSVG(svgFile, lineCount)
		img.File = svgFile
		img.Refresh()
	}

	// 创建按钮来动态增加折线
	button := widget.NewButton("Add Polyline", func() {
		updateSVG() // 增加折线
	})

	// 设置窗口内容
	myWindow.SetContent(container.NewVBox(img, button))

	// 显示窗口
	myWindow.ShowAndRun()
}

// createSVG 创建 SVG 文件
func createSVG(filePath string, lines int) {
	f, err := os.Create(filePath)
	if err != nil {
		panic(err)
	}
	defer f.Close()

	canvas1 := svg.New(f)
	canvas1.Start(200, 200)

	var x1 []int
	var y1 []int
	// 创建折线
	//points := ""
	for i := 0; i < lines; i++ {
		x := 10 + i*20
		y := 10 + i*20
		x1 = append(x1, x)
		y1 = append(y1, y)
		//points += string(x) + "," + string(y) + " "
	}

	canvas1.Polyline(x1, y1, "fill:none;stroke:black;stroke-width:2")
	canvas1.End()
}
